use strict;
use warnings;
use CDMA;

# poczatkowy stan rejestrow
my @reg1 = qw(0 1 0 1 1 0);
my @reg2 = qw(0 1 0 1 1 0);
my @reg3 = qw(0 1 0 1 0 1 0 0 0);
my @reg4 = qw(0 1 0 1 0 1 0 0 0);
# wygenerowany ciagi maksymalny
my @cm1; my @cm2; my @cm3; my @cm4;

# generacja ciagow maksymalnych 63 bitowych
# rejestr 6-bit; odczepy: [1, 6]  i [6, 5, 2, 1]
for my $i ( 0 .. 62 ) {
	unshift @reg1, ($reg1[0] xor $reg1[5]) + 1 - 1;
	unshift @reg2, ($reg2[5] xor $reg2[4] xor $reg2[1] xor $reg2[0]) + 1 - 1;	
	my ($tmp1, $tmp2) = (1, 1);
	pop @reg1 or $tmp1 = -1;
	push @cm1, $tmp1;
	pop @reg2 or $tmp2 = -1;
	push @cm2, $tmp2;
}

# generacja ciagow maksymalnych 511 bitowych
# rejestr 9-bitowy; odczepy [9, 5] i [9, 6, 4, 3]
for my $i ( 0 .. 510 ) {
	unshift @reg3, ($reg3[8] xor $reg3[4]) + 1 - 1;
	unshift @reg4, ($reg4[8] xor $reg4[5] xor $reg4[3] xor $reg4[2]) + 1 -1;
	my ($tmp3, $tmp4) = (1, 1);
	pop @reg3 or $tmp3 = -1;
	push @cm3, $tmp3;
	pop @reg4 or $tmp4 = -1;
	push @cm4, $tmp4;
}

# zapis ciagow maksymalnych 63-bitowych do pliku cm_63
open FH, "> data/cm_63" or die $!;
print FH "@cm1 \n@cm2 ";
close FH;

#zapis ciagow maksymalnych 511 bitowych do pliku cm_511
open FH, "> data/cm_511" or die $!;
print FH "@cm3 \n@cm4 ";
close FH;


# test na to czy sa to ciagi maksymalne
print "Autokorelacja + wsztstkie korelacje skrosne (przesuniecia od 0):\n\nCM1 63bit:\n";
for my $i ( 0 .. 62 ) { print CDMA::cross_corel($i, @cm1); } 
print "\n\nCM2 63bit:\n";
for my $i ( 0 .. 62 ) { print CDMA::cross_corel($i, @cm2); }
print "\n\nCM1 511bit:\n";
for my $i ( 0 .. 510 ) { print CDMA::cross_corel($i, @cm3); } 
print "\n\nCM2 511bit:\n";
for my $i ( 0 .. 510 ) { print CDMA::cross_corel($i, @cm4); } 
print "\n";
 
